﻿// owner 蒋家伟

#include "ElementNotifyUtils.h"

// jsdk
#include "IElementChangedEvent.h"
#include "ElementChangedEventArgs.h"
#include "IElement.h"
#include "Dbg_Warn_Define.h"

void jsdk::ElementNotifyUtils::ElementDataChangedNotify(const IElement* pElement, const ElementChangedType& changedType)
{
    if (pElement == nullptr)
        return;
    IElementChangedEvent* pElementChangedEvent = IElementChangedEvent::get();
    DBG_WARN_AND_RETURN_VOID_UNLESS(pElementChangedEvent, L"ElementChanged事件未初始化", L"蒋家伟", L"2023-11-06");
    ElementChangedEventArgs args(pElement->getDocument(), ChangedStatusUMap{ std::make_pair(pElement->getElementId(), changedType) });
    pElementChangedEvent->sendEvent(&args);
}

void jsdk::ElementNotifyUtils::ElementDataChangedNotify(const IDocument* pDoc, ChangedStatusUMap&& changedStatusUMap)
{
    IElementChangedEvent* pElementChangedEvent = IElementChangedEvent::get();
    DBG_WARN_AND_RETURN_VOID_UNLESS(pElementChangedEvent, L"ElementChanged事件未初始化", L"蒋家伟", L"2023-11-06");
    ElementChangedEventArgs args(pDoc, std::move(changedStatusUMap));
    pElementChangedEvent->sendEvent(&args);
}
